package com.wei.czz.framework.admin.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wei.czz.common.dto.admin.menu.MenuDto;
import com.wei.czz.common.vo.admin.menu.MenuFormVo;
import com.wei.czz.framework.admin.entity.MenuEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wei
 * date: 2021-03-15 10:30:18
 * className: MenuDao 系统菜单操作请求数据库交互接口
 * version: 1.0
 * description:
 */
public interface MenuDao extends BaseMapper<MenuEntity> {

    /**
     * 获取所有菜单的菜单id
     * @return 菜单id列表
     */
    List<String> getMenuIdList();

    /**
     * 分页查询菜单缓存列表操作
     * @param page       mp分页对象
     * @param menuIdList 菜单id列表
     * @param menuFormVo 菜单缓存查询参数对象
     */
    Page<MenuDto> getCacheMenuList(Page<MenuDto> page, @Param("menuIdList") List<String> menuIdList,
                          @Param("menuFormVo") MenuFormVo menuFormVo);

    /**
     * 查询子菜单的最大排序等级数值
     * @param menuId       菜单主键
     * @param deleteStatus 删除状态
     * @return 最大排序等级数值
     */
    Integer getNextSort(@Param("menuId") Long menuId, @Param("deleteStatus") Integer deleteStatus);

    /**
     * 查询菜单
     * @param menuPath     菜单路径
     * @param deleteStatus 删除状态
     * @return 菜单列表
     */
    List<MenuEntity> getChildrenMenuList(@Param("menuPath") String menuPath,
                                         @Param("deleteStatus") Integer deleteStatus);

    /**
     * 查询用户关联菜单
     * @param userId 用户主键
     * @param status 状态
     * @param deleteStatus 删除状态
     * @return 菜单对象列表
     */
    List<MenuEntity> selectUserMenuList(@Param("userId") Long userId, @Param("status") Integer status,
                                        @Param("deleteStatus") Integer deleteStatus);
}
